package com.dhecp.project.base.mapper;

import com.dhecp.core.genericDao.GenericDao;
import com.dhecp.core.layui.TreeDataModel;
import com.dhecp.project.base.domain.BaseInfo;
import com.dhecp.project.base.domain.BaseInfoSimple;

import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;

/**
 * 
 * @author DH-Xxj
 * @version 2019年8月27日
 */

public interface BaseInfoMapper extends GenericDao<BaseInfo, String> {

	/**
	 * 验证当前基础数据类型是否隐藏了Vid
	 * @param vType
	 * @return 返回值非空说明Vid为隐藏
	 * @author DH-Xxj
	 */
	String checkedVidHidden(@Param("vType") String vType);
	
	/**
	 * 通过guid查询基础数据
	 * @param guid
	 * @return BaseInfo
	 * @author DH-Xxj
	 */
	BaseInfo findBaseInfoByGuid(@Param("guid") String guid);
	
	/**
	 * 通过基础数据分项（vtype）、基础数据编码（vid）查询基础数据
	 * @param params
	 * @return BaseInfo
	 * @author DH-Xxj
	 */
	BaseInfo findBaseInfoByVtypeAndVid(Map<String, Object> params);

	/**
	 * 通过基础数据分项（vtype）查询基础数据,返回精简数据
	 * @param vtype 基础数据分项
	 * @return BaseInfoSimple 精简基础数据实体
	 * @author DH-Xxj
	 */
	List<BaseInfoSimple> findBaseInfoSimpleByVtype(Map<String, Object> params);
	
	/**
	 * 通过基础数据分项（vtype）和上级数据编码（pVid）查询基础数据,返回精简数据
	 * @param vtype 基础数据分项
	 * @param pVid 上级数据编码
	 * @return BaseInfoSimple 精简基础数据实体
	 * @author DH-Xxj
	 */
	List<BaseInfoSimple> findBaseInfoSimpleByVtypeAndPVid(Map<String, Object> params);

	/**
	 * 通过传入的条件查询银行基础数据列表
	 * @param params
	 * @return List - BaseInfo
	 * @author DH-Xxj
	 */
	List<BaseInfo> findBaseInfoBankList(Map<String, Object> params);
	
	/**
	 * 通过传入的条件查询基础数据列表
	 * @param params
	 * @return List - BaseInfo
	 * @author DH-Xxj
	 */
	List<BaseInfo> findBaseInfoList(Map<String, Object> params);
	
	/**
	 * 通过传入的条件查询基础数据列表(树形列表数据)
	 * @param params
	 * @return List - TreeDataModel
	 * @author DH-Xxj
	 */
	List<TreeDataModel> findBaseInfoTree(Map<String, Object> params);
	
	/**
	 * 删除基础数据
	 * @param baseInfo
	 * @return int
	 * @author DH-Xxj
	 */
	int deleteByGuid(BaseInfo baseInfo);
	
	/**
	 * 修改基础数据默认标志
	 * @param baseInfo
	 * @return int
	 * @author DH-Xxj
	 */
	int updateBaseInfoBdefault(BaseInfo baseInfo);
	
	/**
	 * 修改基础数据禁用标志
	 * @param baseInfo
	 * @return int
	 * @author DH-Xxj
	 */
	int updateBaseInfoBdeleted(BaseInfo baseInfo);
	
}
